Sesión 3

Objetivo de la sesión


El ejercicio de esta sesión pretende afianzar los conocimientos y habilidades para

  • Organizar y limpiar los datos

  • Pegar bases de datos

  • Crear variables

  • Visualización interactiva


Aplicación: emisiones de GEI, comparativo entre paises


El cambio climático de origen antropogénico se debe a la emsión de gases efecto invernadero (CO2, metano, oxido nitroso, otros). Vaya acá para una explicación de cada uno de ellos. A nivel global, la quema de combustibles fósiles para transporte y energía es la fuente de emisiones más importante. En Colombia, una contribución importante es la deforestación, ver algunas cifrás acá. Casi todos los paises del mundo se han comprometido a reducir sus emisiones, con el objetivo global de evitar el aumento de la temperatura continental promedio por encima de \(2^oC\) en relación los niveles pre-industriales META.

Nuestras preguntas son las siguientes


  1. ¿Cuáles son los paises que emiten más GEI?

  2. ¿Cuáles son los paises que emiten más GEI en términos per cápita?

  3. ¿Cuál es la relación entre el ingreso y las emisiones?

  4. ¿Cómo han evolucionado las emisiones totales globales en las dos últimas décadas?

  5. ¿Ha aumentado la eficiencia energética de la producción?


Datos

Usaremos los datos provistos por el Banco Mundial a través de los World Development Indicators. En el REPO descargue las bases WDI_CO2.xlsx y gdp_percapital.xlsx


Paso a paso


  1. Cargue los datos



  1. Dejar los datos a punto para analizar


2.1 Ajustar los nombres de las columnas


Es recomendable que las columnas tengan nombres sencillos, cortos, y de fácil recordación o identificación. Empezaremos con los datos WDI. Cambiaremos los nombres de las columnas iniciales, y le quitamos el [YR…] a las columnas de año.


colnames(wdi)[2]<-"serie"
colnames(wdi)[3]<-"country"
colnames(wdi)[4]<-"ccode"

colnames(wdi)[5]<-1997

#Para no hacerlo año por año, usamos un loop
i<-5 
while (i <29){
  i<-i+1
  colnames(wdi)[i]<-1997+i-5
}


La columna serie contiene las variables que nos interesa analizar. Les asignamos nombres cortos y de fácil recordación (para mí al menos). Haremos un condicional anidado, es decir, un ifelse dentro de otro ifelse


library(tidyverse)
wdi<-wdi%>%mutate(variable=ifelse(serie=="EN.ATM.GHGT.KT.CE","total_ghg",ifelse(serie=="EN.ATM.CO2E.KT","total_co2",
                                                                      ifelse(serie=="EN.ATM.CO2E.PP.GD.KD","co2_pib",
                                                                        ifelse(serie=="SP.POP.TOTL","pop","")))))  


Note que la base de datos está en formato ancho. Para el análisis es mejor el formato largo. Antes de hacer el reshape eliminamos las columnas innecesarias


wdi<-wdi%>%select(-c(`Series Name`,serie,))


2.2 Cambiar la orientación de los datos: wide to long


Para hacer el cambio de ancho a largo, lo haremos en dos pasos. Antes de hacerlo en código, dibuje en una hoja como desea que quede estructurada su base de datos.


# Paso 1

wdi<-wdi%>%pivot_longer(!c(country,ccode,variable),names_to="year",values_to="value")

wdi<-wdi%>%filter(!is.na(country)) # eliminamos los valores missing para la columna country

# Paso 2
wdi1<-wdi%>%pivot_wider(id_cols=c(country,ccode,year),names_from=variable,values_from=value)


Note que en sus datos aparecen celdas que contienen dos puntos (..). Estos son valores perdidos, missing, así que debemos declararlos adecuadamente para que los entienda como tal


wdi1[wdi1==".."]<-NA


Finalmente, debemos asegurarnos que los datos están en la calse que corresponde a la característica de la variable. Es decir, que las variables cuantitativas sean reconocidas como numéricas, por ejemplo. Veamos la clase de cada variable


class(wdi$year) # Si lo hacemos para una sola columna
[1] "character"


sapply(wdi1,class) # si lo hacemos para todas las columnas
    country       ccode        year   total_ghg   total_co2     co2_pib 
"character" "character" "character" "character" "character" "character" 
        pop 
"character" 


Note que las variables están como character, pero las necesitamos como numéricas, pues son de carácter cuantitativo


wdi1<-wdi1%>%mutate(total_ghg=as.numeric(total_ghg)) #Así lo hacemos columna por columna
class(wdi1$total_ghg)
[1] "numeric"
i<-c(3:7)
wdi1[,i]<-apply(wdi1[,i],2,function(x)as.numeric(x)) # así hacemos todas las columnas de una vez
sapply(wdi1,class)
    country       ccode        year   total_ghg   total_co2     co2_pib 
"character" "character"   "numeric"   "numeric"   "numeric"   "numeric" 
        pop 
  "numeric" 


Nuestros datos de esta base ya quedaron listos. Hay que hacer los mismos ajustes para la base gdp. Ya sabe coo enfrentarlo.



2.3 Pegar las bases de datos


Queremos pegar la base gdp a la base wdi para ello debemos determinar las variables que identifican una observación única y que son comunes en las dos bases de datos. Es decir, las llaves. En este caso, note que la combinación ccode year definen una única observación que es común entre las bases de datos.

Para hacer esto tenemos varias posibilidades. Está la función merge y la función join. Usaremos esta última. Ustede debe practicar y replciar el resultado usando merge


wdi1<-left_join(wdi1,gdp,by=c("ccode","year","country"))


Ya tenemos la base completa.


Paso 3 Analizar los datos


  • Pregunta 1 ¿Cuáles son los paises que emiten más GEI?


Vamos a calcularlo para el año 2019, que es el último para el cual tenemos datos. Graficaremos usando plotly

library(plotly)
ghg.plot<-wdi1%>%filter(year==2019)%>%plot_ly(y=~total_ghg,x=~ccode,type="bar",name="Total")
ghg.plot


Ordenemos las barras en forma descendente


ghg.plot<-ghg.plot%>%
  layout(xaxis=list(categoryorder="total descending"))
ghg.plot


  • Pregunta 2 ¿Cuáles son los paises que emiten más GEI en términos per cápita?


Cree la variable de emisiones per cápita usando las variables total_ghg y pop. Luego grafique con orden descendente


  • Pregunta 3 ¿Cuál es la relación entre el ingreso y las emisiones?


gy<-wdi1%>%filter(year==2019)%>%plot_ly(x=~gdp,y=~ghgpc,type="scatter", text=~ccode)
gy


  • Pregunta 4 ¿Cómo han evolucionado las emisiones totales globales en las dos últimas décadas?


Para esto debemos calcular las emisiones totales por año. En cada año hacemos la suma. Para ello agruparemos los datos por año, usando la función group_by()


total<-wdi1%>%group_by(year)%>%summarise(total=sum(total_ghg,na.rm=TRUE))
ghgtot.plot<-total%>%plot_ly(x=~year,y=~total,type="scatter",mode="lines")
ghgtot.plot


Podemos colocar nuestras 4 gráficas en un solo gráfico


subplot(ghg.plot,ghgpc,gy,ghgtot.plot,nrows=2)